package com.mini.grpc.transport;

import com.mini.grpc.common.Status;

/**
 * ServerTransport接口定义了服务端传输的功能。
 * 
 * <p>服务端传输负责监听客户端连接并处理传入的请求。
 */
public interface ServerTransport {
    
    /**
     * 启动服务端传输
     * 
     * @return 如果成功启动则返回true，否则返回false
     */
    boolean start();
    
    /**
     * 关闭服务端传输
     * 
     * @param status 关闭状态
     */
    void shutdown(Status status);
    
    /**
     * 获取服务端传输的监听端口
     * 
     * @return 监听端口
     */
    int getPort();
    
    /**
     * 检查服务端传输是否已关闭
     * 
     * @return 如果已关闭则返回true，否则返回false
     */
    boolean isShutdown();
    
    /**
     * 检查服务端传输是否已终止
     * 
     * @return 如果已终止则返回true，否则返回false
     */
    boolean isTerminated();
    
    /**
     * 等待服务端传输终止
     * 
     * @throws InterruptedException 如果等待过程被中断
     */
    void awaitTermination() throws InterruptedException;
} 